//
//  IconViewModel.m
//  MVVMLearn
//
//  Created by 李旭阳[产品技术中心] on 2020/6/3.
//  Copyright © 2020 李旭阳[产品技术中心]. All rights reserved.
//

#import "IconViewModel.h"
#define kAppIconSize 96

@interface IconViewModel()

//一个URL会话任务，它将下载的数据直接返回到内存中的应用程序。 这里就指明了下载图片的地方
@property (nonatomic, strong) NSURLSessionDataTask *sessionTask;

@end

#pragma mark -
@implementation IconViewModel
- (void)startDownload{
//    NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject ;
//      NSLog(path);
    NSURLRequest *request = [NSURLRequest
                             requestWithURL:[NSURL URLWithString:self.customModel.thumbnailUrl]
                             //缓存策略，对特定的 URL 请求使用网络协议中实现的缓存逻辑。这是默认的策略。
                             cachePolicy:NSURLRequestUseProtocolCachePolicy
                             //超时时间
                             timeoutInterval:20.f];
    _sessionTask = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSLog(@"%@",data);
        if (error!=nil) {
            NSLog(@"网络连接失败失败 错误码%zd", error.code);
            if ([error code] == NSURLErrorAppTransportSecurityRequiresSecureConnection) {
                abort();
            }
        }
        
        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
            
            UIImage *image = [[UIImage alloc] initWithData:data];
            //如果尺寸不一样就重新绘制，然后显示，否则就直接显示
            if (image.size.width != kAppIconSize || image.size.height != kAppIconSize) {
                CGSize itemSize = CGSizeMake(kAppIconSize, kAppIconSize);
                
                UIGraphicsBeginImageContextWithOptions(itemSize, NO, 0.f);
                CGRect imageRect = CGRectMake(0,0, itemSize.width, itemSize.height);
                [image drawInRect:imageRect];
                self.customModel.thumbnailIcon = UIGraphicsGetImageFromCurrentImageContext();
                UIGraphicsEndImageContext();
                
            }else{
                self.customModel.thumbnailIcon = image;
            }
            
            //调用我们的完成处理程序，告诉我们的客户端我们的图标已经准备好显示了
            if (self.completionHandler!=nil) {
                self.completionHandler();
            }
            
        }];
        
    }];
    [self.sessionTask resume];
}

//cancel
- (void)cancelDownload{
    [self.sessionTask cancel];
    _sessionTask=nil;
}



@end
